PrecCapitolo 18: Codifica di sorgente multimediale SuCapitolo 18: Codifica di sorgente multimediale Sezione 18.2: Codifica di immagineSegue

## 18.1Codifica audio↓

Al § 4.2.1.1↑ abbiamo svolto una valutazione approssimata della distorsione introdotta dal processo di quantizzazione di segnale audio, ricavando che l’utilizzo di M bit/campione si traduce in SNRq(M)|dB≃6⋅M dB. Quindi, al § 4.2.2↑ si è mostrato come adottando una caratteristica di quantizzazione logaritmica anziché lineare, ci si può adattare meglio alla effettiva densità di probabilità del segnale vocale, rendendo inoltre SNRq relativamente poco sensibile alla sua effettiva dinamica, dando luogo alla cosidetta codifica pcm con legge A o legge μ, standardizzata nel 1988 da itu-t come G.711↓, [786] [786]`http://www.itu.int/rec/T-REC-G.711/e`. Mentre questa costituisce un formato universale di scambio permettendo la compatibilità tra dispositivi e tecnologie, nel seguito sono state sviluppate diverse tecniche alternative [787] [787]Una raccolta di riferimenti a risorse relative a codec audio orientati alle applicazioni multimedali può essere trovata presso `http://labtel.ing.uniroma1.it/codecs`, capaci di offrire la stessa (o migliore) qualità di ascolto con velocità di trasmissione contenute, non solo per segnali vocali in banda telefonica, ma anche per segnali a banda larga, musicali, e multicanale, di cui tentiamo ora una sommaria rassegna.

### 18.1.1Codifica di forma d’onda↓

Questa classe di codificatori opera esclusivamente nel dominio del tempo, agendo campione per campione, e ottiene una qualità comparabile o superiore a quella del pcm sfruttando le caratteristiche di memoria presenti nel segnale, e/o adattando alcuni parametri di funzionamento alle caratterististiche tempo varianti del segnale.

#### 18.1.1.1DPCM o PCM Differenziale↓

La prima variazione rispetto al pcm è stata quella di applicare il principio della codifica predittiva (pag. 1↑), semplicemente adottando il precedente campione di ingresso come predizione di quello successivo.
Figure 18.1Codec audio Differential PCM o dpcm
Il corrispondente schema di eleborazione è mostrato in fig. 18.1↑, ed il suo funzionamento è suddiviso in due fasi: nella
prima il codificatore sottrae il campione precedente (all’inizio nullo) all’attuale, e nella seconda questa differenza è risommata al valore di differenza precedente (all’inizio nullo) in modo da ri-calcolare il valore attuale, e salvarlo nel registro di memoria. Il segnale differenza è caratterizzato da valori di ampiezza ridotti rispetto all’originale, e può essere codificato con 7 bit/campione, producendo ora una velocità per la qualità telefonica di 56 kbps. Il decodificatore si limita quindi a sommare alla differenza ricevuta il valore ricostruito del campione precedente, ed effettuare l’operazione di restituzione analogica. Osserviamo che il codificatore calcola il valore precedente mediante un circuito identico a quello presente al decodificatore, e per questo l’operazione è perfettamente invertibile.

#### 18.1.1.2ADPCM↓ o DPCM Adattivo

Questo metodo differisce dal precedente per due aspetti: da un lato il processo di predizione tiene conto di più di un campione passato e non di uno solo come nel dpcm, come descritto in fig. 18.3↓
Figure 18.3Codec dpcm con predittore a tre coefficienti costanti
in cui è mostrato un predittore del terzo ordine che in pratica consiste in un filtro trasversale i cui coefficienti sono fissati in base alle caratteristiche statistiche medie del segnale vocale. Il secondo aspetto è che ora il quantizzatore↓ modifica nel tempo la propria dinamica di azione (da cui il termine adattativo) in base ad una stima della dinamica del segnale.
Figure 18.4Dinamica di quantizzazione e sua stima diretta o backward - tratto da http://cnx.org/content/m32074/latest/
Nel lato sinistro della fig. 18.4↑ è mostrata una caratteristica di quantizzazione uniforme operante su di una dinamica di ingresso φxσ̂x, con φx> 1 scelto in modo da rendere trascurabile la probabilità che un valore di ingresso troppo elevato determini la saturazione del quantizzatore. Utilizzando una stima a breve termine della varianza σ̂2x calcolata sugli ultimi campioni di segnale (a media nulla), ossia ad es. calcolando σ̂2x(n)=(1)/(N)∑Ni= 1x2(n−i), si possono rendere gli intervalli di decisione Δ piccoli nelle fasi di segnale piccolo, in modo da mantenere l’SNR costante anche per segnali con ampiezze molto variabili. Inoltre, è possibile omettere la trasmissione della stima di varianza se quest’ultima è calcolata in modalità backward, ossia a partire dai valori y(n)=Q[x(n)], dato che la stessa operazione è eseguibile in modo indipendente anche dal lato del decodificatore. Infine, la stima della varianza↓ è ulteriormente semplificata se realizzata mediante una formula recursiva, ossia
σ̂2x(n)=ασ̂2x(n− 1)+(1 −α)y2(n)
il cui risultato è mostrato in fig. 18.5↓, dove la linea tratteggiata rappresenta il valore istantaneo di y2(n), mentre quella continua mostra i valori di σ̂2x(n) ottenuti in modo recursivo.
Figure 18.5Stima recursiva backward della varianza, confrontata con i valori di y2(n), per α= 0.9
Infine, la fig. 18.6↓
Figure 18.6Architettura di un codec adpcm
mostra i due estremi del codec adpcm, che rimangono sincronizzati anche nel caso di saturazione del quantizzatore adattativo.
Il miglioramento della qualità ottenibile ha determinato la possibilità di ridurre il numero di bit (e di conseguenza di livelli) del quantizzatore a 5, 4, 3, 2 bit/campione, a cui corrispondono rispettivamente velocità di codifica di 40, 32, 24, 16 kbps. Questi sono i valori a cui si riferisce lo standard itu-t G.721, successivamente confluito nel G.726.

#### 18.1.1.3Codifica per sottobande↓

Anche la raccomandazione G.722 è basata sulla codifica adpcm, ma applicata ad un segnale con una banda audio più larga, riproducendo correttamente frequenze fino a 7 KHz. Ciò avviene dopo aver suddiviso le componenti frequenziali del segnale in due sottobande, come mostrato in fig. 18.7↓,
Figure 18.7Architettura di un codec adpcm a sottobande
mediante una coppia di filtri passa-basso e passa-alto con comune frequenza di taglio di 3.5 KHz. Il canale relativo alla semi banda superiore è quindi campionato a frequenza di 16 kHz, mentre l’altro è praticamente equivalente al segnale in banda telefonica preso in esame fino ad ora. Per entrambi i canali è applicata la codifica adpcm, ma le velocità dei due sono impostate in modo differente, dando più importanza alla componente di bassa frequenza, percettivamente più rilevante: ad esempio, si può scegliere di assegnare 16 kbps alle alte frequenze e 48 alle basse, ottenendo un totale di 64 kbps per una qualità risultante migliore del G.711, in quanto ora si opera su di un segnale a larga banda, con risultati idonei ad applicazioni come la videoconferenza.
Lo stesso schema di codifica per sottobande più adpcm è proposto anche dallo standard G.726, ma applicato ad un segnale a qualità telefonica, offrendo le velocità di 40, 32, 24 e 16 kbps.

### 18.1.2Codifica basata su modello

I metodi fin qui discussi non tengono particolarmente conto della natura del segnale da codificare. Restringendo viceversa il campo al solo caso di segnale vocale, le conoscenze relative alla sua particolare modalità di produzione possono essere usate per ridurre le informazioni da trasmettere, costituite ora dai parametri che caratterizzano un suo modello di generazione. Essendo questo il dominio delle scienze linguistiche e fonetiche, svolgiamo una piccola digressione in tal senso.

#### 18.1.2.1Produzione del segnale vocale↓

L’apparato fonatorio viene idealizzato per mezzo del cosiddetto modello a tubi (vedi fig. 18.8↓)
Figure 18.8Rappresentazione schematica del tratto vocale e relativo modello a tubi
, in cui sia il tratto vocale (compreso tra le corde vocali e le labbra) che il tratto nasale (dal velo alle narici) sono pensati come una concatenazione di tubi di diversa sezione. Nei suoni vocalici l’aria che attraversa le corde vocali ne determina la chiusura periodica, dando origine ad un segnale di eccitazione anch’esso periodico detto onda glottale, la cui frequenza è detta pitch↓ [788] [788]`http://en.wikipedia.org/wiki/Pitch_accent_(intonation)`; la differenza di area delle diverse sezioni provoca un disadattamento di impedenza acustica [789] [789]Si applica in pratica la stessa teoria valida per le linee elettriche, in cui al posto di tensione e corrente, ora si considerano rispettivamente pressione p e velocità u e la conseguente formazione di onde riflesse (vedi fig. 18.9↓)
Figure 18.9Natura delle risonanze del tratto vocale e loro effetto filtrante sull’onda glottale
, che per lunghezze d’onda in relazione intera con la lunghezza del tratto vocale, determinano fenomeni di onde stazionarie, ovvero di risonanze↓ [790] [790]Si tratta di un fenomeno in qualche modo simile a quello che si verifica soffiando in una bottiglia, e producendo un suono che dipende dalla dimensione della stessa., che in fonetica sono indicate come formanti↓. La collocazione in frequenza delle formanti produce un effetto filtrante che modifica lo spettro dell’onda glottale, producendo così il timbro corrispondente ai diversi suoni della lingua [791] [791]Infatti i diversi suoni vocalici e/o consonantici sono prodotti mediante diverse posture articolatorie (la posizione di lingua, mascella e labbra), ovvero diversi profili d’area del tratto vocale, nonchè l’attivazione o meno del tratto nasale. Pertanto ai diversi fonemi corrispondono differenti frequenze formanti, e dunque una diversa risposta in frequenza.. Il tratto vocale termina quindi con l’apertura delle labbra, che nel modello a tubi corrisponde ad una impedenza di radiazione che produce un effetto di derivata, e dunque un’enfasi delle alte frequenze per lo spettro complessivo del parlato. Infine, si assume il modello valido anche per i suoni fricativi, prodotti anziché mediante le corde vocali, mediante una occlusione che causa una turbolenza nel flusso d’aria.
Caratteristiche tempo-frequenza del segnale vocale↓
La parte sinistra di fig. 18.10↓
Figure 18.10Forma d’onda e spettrogramma per la frase should we chase
mostra la forma d’onda relativa alla frase inglese “should we chase” (dovremmo inseguire?) assieme alla relativa trascrizione fonetica [792] [792]I simboli usati sono noti come arphabet, vedi `http://en.wikipedia.org/wiki/Arpabet`, e la pronuncia dovrebbe essere qualcosa del tipo sciuduiceis., mettendone in luce il carattere quasi periodico in corrispondenza delle vocali e quello tipo rumore per le consonanti, nonché la diversa durata dei vari suoni, l’assenza di confini temporali precisi tra gli stessi, e la diminuzione del periodo di pitch a fine frase, corrispondente all’intonazione crescente tipica di una frase interrogativa. In particolare, notiamo come per i suoni vocalici i singoli periodi di pitch siano caratterizzati da una brusca discontinuità prodotta dall’onda glottale, seguita da oscillazioni smorzate legate alle risonanze del tratto vocale.
Il segnale viene quindi campionato a 10 KHz e suddiviso in finestre di analisi, per le quali vengono calcolate delle dft, la cui densità di energia in dB è riprodotta in verticale mediante una scala cromatica come mostrato nei sonogrammi↓ [793] [793]Tratti da https://books.google.it/books?id=Z6Otr8Hj1WsC presenti al lato destro di fig. 18.10↑, che permettono di valutarne la variabilità temporale delle caratteristiche spettrali. Il differente aspetto dei due diagrammi è dovuto alla diversa lunghezza di finestra, pari rispettivamente a 10 e 40 msec per il grafico superiore ed inferiore [794] [794]Una finestra di 10 msec ha durata comparabile con il periodo di pitch, e ciò produce l’effetto a striature verticali del primo diagramma, meno pronunciato verso la fine, dove il pitch è più elevato. Una finestra di 40 msec si estende su più periodi di pitch, e determina una migliore risoluzione in frequenza, cosicché nel diagramma inferiore si possono notare delle striature orizzontali che corrispondono alle armoniche della frequenza di pitch.. In entrambe le rappresentazioni sono ben evidenti le traiettorie delle formanti, che evolvono in modo continuo, coerentemente con la velocità di articolazione del parlante.

#### 18.1.2.2Codifica a predizione lineare - LPC↓

Il modello di produzione e le caratteristiche illustrate portano formulare un processo di codifica basato sulla suddivisione del segnale vocale in intervalli (o finestre di analisi) di estensione tra i 10 ed i 30 msec, durante i quali il segnale può essere considerato praticamente stazionario [795] [795]La durata di una sillaba può estendersi da 10-15 msec per le vocali ridotte, fino a più di 100 msec per quelle accentate., e condurre una analisi (o stima) dei parametri del modello, che consistono in

- il tipo di eccitazione (periodica o caotica), la sua frequenza fondamentale (o pitch) se periodica, e la sua intensità;
- i parametri che caratterizzano l’effetto filtrante del tratto vocale

e quindi trasmettere questi valori, in modo che in ricezione sia possibile riprodurre un segnale simile all’originale mediante un decodificatore del tipo illustrato in fig. 18.11↓.
Figure 18.11Schema di codificatore e decodificatore lpc
In particolare, il modello a tubi (e quindi basato sulle risonanze) del tratto vocale si presta a considerare un filtro di sintesi di tipo numerico e recursivo, ossia che calcola il valore dei campioni di uscita yn a partire da una combinazione lineare di p campioni passati ŷn=∑pi= 1aiyn−i, più un errore di predizione↓ en che rappresenta il processo di eccitazione, ovvero
(18.119) yn=ŷn+en=p⎲⎳i= 1aiyn−i+en
Per ogni finestra di analisi, i coefficienti ai (o coefficienti lpc del predittore↓ di ordine p) si ottengono come quelli che rendono minimo il valore atteso dell’errore quadratico E{e2n}=(yn−∑pi= 1aiyn−i)2 (ovvero, l’energia dell’errore), e sono individuati eguagliando a zero l’espressione delle sue derivate parziali rispetto ai coefficienti aj: scriviamo dunque
(∂)/(∂aj)E{(yn−p⎲⎳i= 1aiyn−i)2}= 2E{(yn−p⎲⎳i= 1aiyn−i)yn−j}= 0
da cui si ottiene
(18.120) E{ynyn−j}=p⎲⎳i= 1aiE{yn−iyn−j}
Il valore atteso E{ynyn−j} è quindi stimato [796] [796]Sottintendendo una ipotesi di stazionarietà ed ergodicità non vera, ma molto comoda per arrivare ad un risultato. a partire dai campioni temporali presenti nella finestra di analisi, ovvero
(18.121) E{yn−iyn−j} ≐ Ryy(|i−j|) e   ponendo k=|i−j| = Ryy(k) =N−k⎲⎳n= 1ynyn+k
dove l’estremo superiore della sommatoria varia in modo da includere solo i campioni effettivamente presenti nella finestra di analisi [797] [797]La (18.121↑) è effettivamente una stima della autocorrelazione↓ del segnale a durata limitata che ricade nella finestra di segnale, mentre l’inclusione nella sommatoria di un numero di termini pari al numero di campioni disponibili porta ad un diverso tipo di risultato, detto metodo della covarianza, ed un diverso modo di risolvere il sistema (18.122↓).. La (18.121↑) permette di riscrivere (18.120↑) come
Ryy(j)=p⎲⎳i= 1aiRyy(|i−j|)
che valutata per j= 1, ⋯,p individua un sistema di p equazioni [798] [798]dette di Yule-Walker↓. in p incognite
(18.122) R(1) R(2) ⋮ R(p) = R(0) R(1) ⋯ R(p− 1) R(1) R(0) R(1) R(p− 2) ⋮ ⋮ ⋱ ⋮ R(p− 1) R(p− 2) ⋯ R(0) a1 a2 ⋮ ap
che può essere risolto nei termini dei coefficienti ai mediante metodi particolarmente efficienti [799] [799] In base alle assunzioni adottate, Ryy(j) risulta una funzione pari dell’indice j, e la corrispondente matrice dei coefficienti viene detta di Toeplix, consentendone l’inversione mediante il metodo di Levinson-Durbin (vedi `http://en.wikipedia.org/wiki/Levinson_recursion`), che presenta una complessità O(n2) anziché O(n3), come sarebbe necessario per invertire la matrice dei coefficienti.;ed i coefficinenti utilizzati dal decodificatore per applicare la 18.119↑.
Il filtro trasversale che esegue il calcolo ŷn=∑pi= 1aiyn−i è indicato come predittore, ed associato ad un polinomio [800] [800]Una breve analisi della relazione tra dft e trasformata zeta è svolta al § 4.4.1↑. P(z)=∑pi= 1aiz−i; mentre il filtro fir che valuta l’errore di predizione (o residuo) en=yn−∑pi= 1aiyn−i è indicato come filtro inverso↓ o sbiancante, associato al polinomio A(z)= 1 −P(z), e mostrato nel lato sinistro della fig. 18.12↑.
Figure 18.12Filtro predittore, filtro inverso associato, e filtro di sintesi lpc
Indicando ora con G⋅un una codifica del residuo en, il segnale di partenza può essere (quasi) ri-ottenuto come mostrato nella parte destra della fig. 18.12↑, ossia facendo passare un attraverso il filtro iir H(z)=(1)/(A(z))=(1)/(1  −P(z)).
Dato che, in base a considerazioni che non svolgiamo, en risulta possedere una densità spettrale bianca, |H(z)|2 (calcolato per z=eiω) rappresenta una vera e propria stima spettrale↓ del segnale di partenza, come mostrato in fig. 18.13↓per diversi valori di p, verificando che per suoni vocalici si ottengono risultati accettabili già per valori di p tra 8 e 14, mentre per le fricative l’ordine può essere ancora inferiore.
Figure 18.13Approssimazione spettrale LPC per diversi ordini di predizione
Stima del periodo di pitch↓
Resta ora da illustrare il modo di decidere se la finestra di analisi contenga un suono sordo o sonoro, e nel secondo caso, il suo periodo. Osserviamo che in media la frequenza di pitch risulta pari a circa 120 e 210 Hz nel caso rispettivamente di voci maschili e femminili, con una estensione che varia approssimativamente da metà al doppio del pitch medio [801] [801]Il pitch varia durante la pronuncia di una frase in accordo alla sua semantica, alla lingua, ed all’enfasi emotiva impressa dal parlatore. Da un punto di vista musicale, la dinamica dei valori (da metà al doppio) si estende quindi su di un intervallo di due ottave. L’intera gamma dei registri dell’opera si differenzia per 22 semitoni, dal Mi2 del basso al Do4 del soprano, ovvero un rapporto di frequenze pari a 3,6.. La stima del periodo di
pitch può essere realizzata a partire dalla funzione di autocorrelazione a breve termine 18.121↑, mostrata nella colonna di destra della figura a lato, a fianco delle finestre di segnale su cui è stata calcolata [802] [802]In realtà prima del calcolo della autocorrelazione, il segmento di segnale è stato moltiplicato per una finestra di Hamming, che provoca lo smussamento visibile ai bordi., per un suono vocalico (sopra) e fricativo (sotto). Come evidente, nel caso del suono vocalico l’autocorrelazione↓ presenta un primo picco a 9 msec ed un secondo a 18 msec, corrispondenti al periodo di pitch ed al suo doppio; viceversa nel caso del suono simile al rumore, non sono visibili picchi, come da aspettarsi nel caso di una segnale incorrelato. Pertanto, l’autocorrelazione può essere usata per indicare la presenza o meno di un suono vocalico, e nel caso affemativo, stimare il suo pitch.
Nella pratica per i suoni sordi si ottengono buoni risultati di sintesi usando come eccitazione un vero e proprio rumore bianco; d’altra parte, per i suoni sonori l’uso di forme d’onda impulsive con periodo pari al pitch stimato, sebbene capaci di produrre un bit rate riducibile fino a 2.4 kbps, non fornisce risultati particolarmente utilizzabili, producendo un voce piuttosto robotica. Per questo motivo, si sono sviluppate le tecniche seguenti.

#### 18.1.2.3Predizione lineare ad eccitazione residuale - RELP↓

Per ovviare alla sovra-semplificazione dello lo schema di sintesi riportato in fig. 18.11↑, dopo aver svolto l’analisi spettrale lpc, il residuo di predizione relativo alla finestra di analisi viene effettivamente calcolato, e applicata una tecnica di codifica di forma d’onda [803] [803]In questo modo si evita anche di dover operare una esplicita decisione sonoro/sordo, visto che in realtà le due fonti di eccitazione posso essere presenti contemporaneamente, come per i cosiddetti suoni affricati.: questo modo di operare è indicato come codifica relp (Residual Excited LP).
Analysis by synthesis↓ - ABS
Anziché calcolare il residuo di predizione, codificarlo, e trasmetterlo in tale forma, la tecnica di analisi via sintesi adotta una tecnica ad anello chiuso, cercando di trovare quale segnale di eccitazione [804] [804]Generato per tentativi, oppure da sceglire in un dizionario di sequenze di eccitazione già codificate. fornire al filtro di sintesi in modo che il risultato sia quanto più possibile simile al segnale originale (vedi fig. 18.15↑); quindi, i parametri del filtro di sintesi e della eccitazione sono trasmessi al decoder. La funzione di minimizzazione opera dunque una vera e propria ricerca tra i possibili segnali di eccitazione.
Figure 18.15Schema di codifica vocale abs - Analysis by Synthesis
Filtraggio percettivo↓
Figure 18.16Spettro LPC vocalico e relativo filtro di pesatura percettiva dell’errore di predizione
Sempre in fig. 18.15↑ si mostra come il processo di minimizzazione prende in considerazione un segnale di errore ottenuto filtrando l’errore effettivo mediante un filtro di pesatura percettiva, il cui andamento frequenziale è sostanzialmente reciproco rispetto a quello stimato del segnale [805] [805]Il filtro di pesatura percettiva si ottiene a partire dagli stessi coefficienti di predizione ai che descrivono l’andamento spettrale della finestra di segnale, definendo la sua trasformata zeta come W(z)=(A(z⁄α1))/(A(z⁄α2))=(H(z⁄α2))/(H(z⁄α1)) in cui, se α1, 2 sono numeri reali, i poli di W(z) si trovano alle stesse frequenze di quelli di H(z) ma con raggio α2 volte maggiore, così come gli zeri di W(z) hanno modulo α1 volte maggiore. Scegliendo 0 <α1,  2< 1 e α1>α2 per la W(z) si ottiene l’effetto desiderato, e mostrato in fig. 18.16↓ (vedi fig. 18.16↓), in modo da attenuare la rilevanza dell’errore di predizione nelle regioni dove c’è più segnale [806] [806]La procedura di minimizzazione determina una eccitazione tale da rendere bianco il residuo al suo ingresso; dato però che questo ha subito il filtraggio da parte di W(z), significa che le frequenze da questo depresse sono in realtà enfatizzate per il segnale di errore reale. ed esaltarla invece nelle regioni con meno segnale, sfruttando così il fenomeno percettivo noto come mascheramento uditivo (vedi pag. 1↓). Anche se per questa via l’energia totale del rumore è maggiore, l’effetto soggettivo è migliore.
Multi pulse linear prediction - MPLP↓
Lo schema operativo suggerito dalla tecnica abs è stato inizialmente realizzato cercando di costruire la sequenza di eccitazione ottima (ossia in grado di minimizzare l’errore pesato percettivamente) come una sequenza di pochi impulsi sparsi, decidendone uno alla volta: pertanto viene inizialmente trovata l’ampiezza e la posizione ottime per un primo impulso, poi per un secondo (con il primo fisso), e così via, fino al numero di impulsi desiderati, tipicamente 4-5 ogni 5 msec, ottenuti suddividendo una finestra di 20 msec in quattro sotto-trame, ognuna con 40 campioni, se fc=  8000 Hz.
Regular pulse excitation with long-term prediction - RPE-LTP↓ o GSM 6.10↓
Il metodo mplp presentava una complessità proibitiva, ma ha dato luogo alla versione semplificata rpe-ltp usata inizialmente nella telefonia gsm per fornire una velocità di 13 kbps. In questo caso dopo aver determinato la posizione del primo impulso nella sottofinestra, ne sono piazzati altri 9 ad intervalli regolari (un campione si e tre no), e quindi l’ottimizzazione riguarda solo i valori delle ampiezze.
Rispetto allo schema di fig. 18.15↑ viene aggiunto un predittore a lungo termine↓ o ltp, utilizzato per rimuovere dal segnale di eccitazione l’eventuale periodicità caratteristica dei suoni vocalici, e stimato a partire da sotto-finestre consecutive (vedi fig. 18.17↓).
Figure 18.17Codifica e decodifica GSM 6.10 full rate o rpe-ltp
Il filtro ltp in essenza consiste in un semplice ritardo pari al periodo di pitch (e dunque ≫p), ed il predittore ltp relativo (vedi lo schema di decodifica) ripropone in uscita una copia ritardata ed attenuata dell’uscita stessa. Il codificatore gsm pertanto determina ritardo e attenuazione dell’ltp in base all’analisi del residuo di predizione lpc [807] [807]In effetti, mentre i coefficienti spettrali (denominati parcor in questo caso) sono determinati a partire dall’analisi dell’intera finestra di 20 msec, l’eccitazione rpe ed i parametri ltp sono ottenuti a partire da sottofinestre di 40 campioni, pari a 5 msec., e lo usa per reintrodurre la componente periodica nella sequenza rpe di cui si sta valutando l’idoneità. Una volta che al residuo lpc viene sottratta la componente predicibile per tramite del ltp, ciò che rimane risulta effettivamente assimilabile ad un rumore, ed è indicato anche come processo di innovazione↓.

#### 18.1.2.4Quantizzazione vettoriale↓

Dato che la codifica del segnale di eccitazione è la parte che impegna più bit da trasmettere, l’evoluzione successiva della codifica vocale adotta la quantizzazione vettoriale per evitare la trasmissione di tutti i parametri dell’eccitazione, che sono invece visti come un vettore e quindi rappresentati per mezzo di una unica codeword che identifica un elemento scelto in un codebook↓ tale da rappresentare l’eccitazione con un errore minimo.
Figure 18.18Regioni di decisione e centroidi per un quantizzatore vettoriale bidimensionale
La costruzione del codebook è realizzata partizionando la distribuzione dei vettori in più regioni di decisione come quelle mostrate nell’esempio di fig. 18.18↑, in modo che un nuovo vettore possa essere classificato [808] [808]Per questa classificazione, così come per poter definire l’insieme dei centroidi, occorre che sia definita una funzione di distanza tra vettori. come contenuto in una di esse, e venire quindi rappresentato dal centroide (i punti rossi) associato alla regione. I centroidi ed i confini di decisione sono determinati mediante un procedimento iterativo tale da minimizzare l’errore quadratico medio di rappresentazione [809] [809]Vedi `http://www.data-compression.com/vq.html`, ma anche la nota 4.2.2↑ a pag. 1↑..
I coefficienti dei vettori associati ai centroidi sono quindi memorizzati in un dizionario (o codebook) noto sia al codificatore che al decodificatore, in modo che ogni vettore può essere rappresentato, anziché da tutti i suoi coefficienti, dal solo indice della codeword del centroide più vicino: al solito, utilizzando M bit per rappresentare l’indice, il codebook sarà formato da 2M diverse codeword. Oltre al codebook utilizzato per rappresentare i possibili vettori di innovazione, la codifica del segnale vocale si può avvantaggiare anche di un secondo codebook, usato per approssimare il vettore dei possibili coefficienti spettrali.

#### 18.1.2.5Predizione lineare ad eccitazione codificata - CELP↓

La fig. 18.19↑ mostra lo schema realizzativo di un codificatore celp, in cui sono evidenziati il filtro di predizione a lungo termine ed il filtro lpc, stimati in modalità ad anello aperto, ed il filtro percettivo che fa in modo che la densità spettrale dell’errore di predizione sia concentrata nelle regioni dove è presente segnale.
Figure 18.19Codificatore e decodificatore CELP
Per ogni codeword di eccitazione selezionata dal codebook, ed il guadagno associato, viene calcolata l’energia dell’errore ottenuto, ed il risultato confrontato con quello ottenibile mediante le altre codeword, finché non si trova la codeword che minimizza l’errore. Ovviamente questo modo di procedere è estremamente oneroso, ma si sono trovati metodi di ricerca più efficienti adottando tecniche di costruzione del codebook come combinazione di sequenze elementari, dando luogo alla famiglia dei codificatori algebrici o acelp.
Figure 18.20Codificatore celp con codebook adattivo per la predizione a lungo termine
D’altra parte, anche l’identificazione del ltp può essere ricondotta ad una ricerca ad anello chiuso, svolta ora nell’ambito di un codebook adattivo↓, costruito a partire dalla precedente sequenza di eccitazione ottima, replicata in forma traslata di un campione alla volta, come illustrato in fig. 18.20↑, che mostra appunto l’uso della eccitazione per la trama precedente per popolare il codebook adattativo: da questo viene quindi individuata la codeword Ia ed il guadagno Ga ottimi, e quindi individuata la codeword di innovazione Is e Gs ottimi, riferiti ad un codebook detto stocastico perché costituito da sequenze pseudo casuali.
Infine, viene mostrato come anche i coefficienti spettrali lpc sono trasmessi mediante una codeword derivata da un processo di quantizzazione vettoriale. Possiamo elencare i seguenti standard che adottano una tecnica di questo tipo:

- Federal Standard 1016 (4800-16000 bit/s) celp
- ITU-T 8-kbit/s G.729 cs-acelp (conjugate-structure algebraic celp);
- dual-rate multimedia ITU-T G.723.1 a 5.3 kbit/s con acelp e 6.3 kbit/s con mp-mlq (multi-pulse maximum likelihood quantization);
- ITU-T low-delay celp 16-kbit/s G.728 - usa finestre di analisi multo brevi e una predizione lineare all’indietro per conseguire un ritardo di 2 msec;
- ETSI enhanced full-rate efr-gsm e half-rate hr-gsm, con velocità di 12.2 e 5.6 kbps, così come i codec amr (adaptive multirate) e wb-amr, con velocità da 7.95 a 4.75 kbps;
- Speex [810] [810]vedi `http://en.wikipedia.org/wiki/Speex` - un insieme di codecs open source esenti da brevetti e liberamente utilizzabili, con velocità (a banda stretta) da 5,95 a 24,6 kbps, e da 5.75 a 42,4 kbps per segnali con banda di 16 kHz

### 18.1.3Codifica psicoacustica↓

Mentre la codifica di forma d’onda (§ 18.1.1↑) non fa assunzioni a riguardo della natura del segnale, i metodi esposti al § 18.1.2↑ sono tutti fortemente orientati a rappresentare segnali vocali. Viceversa, il gruppo di lavoro mpeg di iso si è dedicato ad individuare metodi di codifica idonei alla trasmissione di segnali multimediali di natura qualsiasi, come ad esempio brani musicali. Inoltre, i vincoli relativi al basso ritardo necessario ad assicurare un buon grado di interattività vengono meno, e si possono dunque intrapredendere elaborazioni più complesse, e che richiedono un tempo maggiore. Infine, vengono trascurati rigidi vincoli sulla velocità risultante, accettando invece che questa vari nel tempo in funzione del tipo di segnale da rappresentare.
Come vedremo tra breve, per queste tecniche si fa di nuovo uso di una codifica per sottobande, introdotta nella discussione dell’adpcm, tenendo però anche conto di caratteristiche molto importanti della percezione sonora, il cui sfruttamento è già stato illustrato nella discussione del filtro di pesatura percettiva, ma che ora hanno un impatto ancora maggiore sulla realizzazione del codificatore. I codificatori che fanno uso di queste caratteristiche sono l’mpeglayer 3 o mp3, il Dolby ac, e l’advanced audio coding o aac.
Sensibilità uditiva e mascheramento in frequenza↓
La fig. 18.21↑a mostra la curva di sensibilità del sistema uditivo, ovvero il livello di intensitàminimo perché possa essere percepito un suono: come si vede, questo è molto variabile con la frequenza, per cui anche se il suono B (sinusoide o tono puro) ha la stessa intensità di A non può essere udito, mentre invece A si. Ma ad una analisi più approfondita, si scopre che la presenza di un suono in una determinata regione di frequenza ha l’effetto di modificare la curva di sensibilità per le frequenze vicine, di fatto mascherando suoni a frequenze vicini che altrimenti avrebbero superato la soglia di sensibilità, come mostrato in fig. 18.21↑b: la presenza del suono B rende A non più udibile.
Figure 18.21a) sensibilità uditiva alle diverse frequenze; b) mascheramento uditivo
Figure 18.22Variazione della banda critica in funzione della frequenza
In realtà, l’estensione in frequenza per cui si verifica l’effetto di mascheramento dipende sia dalla frequenza del tono mascherante (come mostrato dalle curve in fig. 18.22↑ ottenute con toni a 1, 4 ed 8 kHz) che dalla sua intensità. In particolare, la banda delle frequenze mascherate viene detta banda critica ed ha una estensione differente alle diverse frequenze: si trova che sotto i 500 Hz la banda critica ha una estensione di circa 100 Hz, mentre a frequenze superiori aumenta (circa) linearmente per multipli di 100 Hz. Ad esempio, un segnale ad 1 KHz (2x500) produce una banda critica di 200 Hz (2x100), mentre a 5 kHz (10x500) questa vale circa 1 kHz (10x100).
Mascheramento temporale
Il secondo effetto percettivo riguarda ancora una mo-
Figure 18.23Mascheramento temporale
difica alle curve di sensibilità, stavolta in modo non selettivo in frequenza, ma che coinvolge tutte le frequenze: si verifica infatti che dopo aver udito un suono forte, per il tempo necessario all’estinzione del suono e che tipicamente dura qualche decina di millisecondi (vedi fig. 18.23↑), l’orecchio non è più in grado di percepire suoni con intensità minore a quello che si sta estinguendo.
MPEG layer 3↓
Il gruppo di lavoro mpeg di iso ha definito uno standard di codifica audio basato su tre livelli di complessità (e potere di compressione) crescente, ed il terzo (o mp3) è quello di gran lunga più popolare, anche grazie alla diffusione che ha avuto via Internet.
Lo schema di funzionamento di principio è mostrato in fig. 18.24↑: il segnale campionato in ingresso (a 32, 44.1 o 48 kHz) transita attraverso un pcm encoder che esegue un filtraggio [811] [811]Eseguito mediante un banco di filtri polifase, vedi ad es. `http://en.wikipedia.org/wiki/Polyphase_quadrature_filter` o`http://cnx.org/content/m32148/latest/`. Le uscite dei filtri polifase, anche se campionate a frequenza inferiore a quella di Nyquist, sono esenti da aliasing, che viene cancellato dall’effetto delle altre sottobande. in 32 sottobande di eguale ampiezza, le cui uscite sono campionate a frequenza 1⁄32 di quella di ingresso. Ogni 384 campioni di ingresso (pari a 12 msec se fc= 32 kHz) sono quindi prodotti 384 ⁄ 32  = 12 campioni per ogni sotto-banda, e per ognuna di esse è individuato il valore del campione più grande, che contribuisce sia ad impostare la dinamica del quantizzatore per quella banda, sia come parametro per il modello psicoacustico.
Figure 18.24Codec percettivo mpeg
Il modello psicoacustico riceve le informazioni prodotte da un banco di filtri di analisi realizzati mediante una mdct, [812] [812]Vedi `http://en.wikipedia.org/wiki/Modified_discrete_cosine_transform` che produce una stima spettrale con risoluzione maggiore di quella del primo banco di filtri, su cui basare le valutazioni di mascheramento uditivo, che a loro volta determinano per ogni sottobanda l’indicazione di un signal to mask ratio (SMR), che a sua volta determina quanti bit utilizzare (e quindi quanti livelli) per la quantizzazione Q dei campioni relativi alle singole sottobande. Quelle contraddistinte da una maggiore sensibilità (ovvero nelle quali si percepiscono anche suoni deboli) saranno quantizzate con più accuratezza, e quindi con più bit e meno rumore; mentre le sottobande caratterizzate da una sensibilità inferiore possono essere quantizzate con meno bit, almeno finché l’SNR di quantizzazione si mantiene superiore all’SMR, dato che in tal caso il rumore è mascherato, e dunque non viene udito. Quindi, i 12 campioni delle 32 sottobande sono quantizzati tenendo conto sia della dinamica effettiva, che del numero di livelli in cui suddividere la dinamica. Infine, viene prodotta una struttura di trama che contiene, oltre ai campioni, anche le informazioni sulla effettiva allocazione dei bit.
Ad una futura edizione, un trattazione più approfondita.
Riferimenti
Si citano dei riferimenti essenziali sulla codifica audio, da cui sono anche tratte alcune illustrazioni

- Introduction to Digital Speech Processing, L. R. Rabiner and R. W. Schafer,
  `https://books.google.it/books?id=Z6Otr8Hj1WsC`
- Beyond VoIP Protocols: Understanding Voice Technology And Networking, O. Hersent, J.P. Petit, D. Gurle `http://what-when-how.com/category/voip-protocols/`
- `http://www.data-compression.com/index.shtml`
- Voice Acoustics: an introduction - University of New South Wales, J. Wolfe, M. Garnier, J. Smith `http://www.phys.unsw.edu.au/jw/voice.html`
- Let’s build an MP3-decoder! - Björn Edström
  `http://blog.bjrn.se/2008/10/lets-build-mp3-decoder.html`

PrecCapitolo 18: Codifica di sorgente multimediale SuCapitolo 18: Codifica di sorgente multimediale Sezione 18.2: Codifica di immagineSegue